<!DOCTYPE html>
<html lang="zh-Hans">
<head>

    <!-- hexo-inject:begin --><!-- hexo-inject:end --><!--[if lt IE 9]>
        <style>body {display: none; background: none !important} </style>
        <meta http-equiv="Refresh" Content="0; url=//outdatedbrowser.com/" />
    <![endif]-->

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="format-detection" content="telephone=no" />
<meta name="author" content="Dragonflyxyz" />



<meta property="og:type" content="article">
<meta property="og:title" content="第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克">
<meta property="og:url" content="https://dragonflyxyz.github.io/2016/10/16/introduction-john-carmack/index.html">
<meta property="og:site_name" content="Dragonflyxyz的知识整理">
<meta property="og:image" content="https://pic3.zhimg.com/v2-74230aaa7e4c6bf6d4c57f6edc0fcf6a_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-0ad6d2899da170457da7485754793186_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-3646b9f432cccda1381e32ebe49e557a_b.jpg">
<meta property="og:image" content="https://pic1.zhimg.com/v2-fa90309e6c27c2106333b3cb57712c24_b.png">
<meta property="og:image" content="https://pic2.zhimg.com/v2-9c8d362bdb215f54f189ac9a50dcad3d_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-ddfc689fae88e75c5b3946d437407f1e_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-d96dc9d7f1ead2e4b4e6796b1f6d66f6_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-fc7852082846a8c649bd90fe5df8df16_b.png">
<meta property="og:image" content="https://pic2.zhimg.com/v2-3fc91420df9caf31b985d83764346871_b.jpg">
<meta property="og:image" content="https://pic2.zhimg.com/v2-535e6a870b1897efd8da5f86d4dd4245_b.jpg">
<meta property="og:image" content="https://pic3.zhimg.com/v2-2cf0cf1c999855b3f0c52da26e9ad8de_b.jpg">
<meta property="og:image" content="https://pic2.zhimg.com/v2-a407757b9c5229baa6a835593d2bcdd9_b.jpg">
<meta property="og:image" content="https://pic1.zhimg.com/v2-fe2cd135955049f71637a416996b8d08_b.jpg">
<meta property="og:image" content="https://pic2.zhimg.com/v2-32028212a5ae563739185e7d67a48dd5_b.jpg">
<meta property="og:image" content="https://pic4.zhimg.com/v2-79a7d620497ebd398b7b65602b676f3f_b.jpg">
<meta property="og:image" content="https://pic2.zhimg.com/v2-ece4226c81db23883029ef0cf1c4b199_b.jpg">
<meta property="og:image" content="https://pic1.zhimg.com/v2-fa5c3308b83dda169cc8d308de7bfa58_b.jpg">
<meta property="og:image" content="https://pic1.zhimg.com/v2-54824c499109b1993dfc3a3186cdcbc4_b.jpg">
<meta property="og:image" content="https://pic4.zhimg.com/v2-3d9c40e10f4d898990bcabcc75ff9823_b.jpg">
<meta property="og:updated_time" content="2016-10-16T05:14:04.928Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克">
<meta name="twitter:image" content="https://pic3.zhimg.com/v2-74230aaa7e4c6bf6d4c57f6edc0fcf6a_b.jpg">

<link rel="apple-touch-icon" href= "/apple-touch-icon.png">


    <link rel="alternate" href="/atom.xml" title="Dragonflyxyz的知识整理" type="application/atom+xml">



    <link rel="shortcut icon" href="/favicon.png">



    <link href="//cdn.bootcss.com/animate.css/3.5.1/animate.min.css" rel="stylesheet">



    <link href="//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.css" rel="stylesheet">



    <script src="//cdn.bootcss.com/pace/1.0.2/pace.min.js"></script>
    <link href="//cdn.bootcss.com/pace/1.0.2/themes/blue/pace-theme-minimal.css" rel="stylesheet">


<link rel="stylesheet" href="/css/style.css">



<link href="//cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">


<title>第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克 | Dragonflyxyz的知识整理</title>

<script src="//cdn.bootcss.com/jquery/2.2.4/jquery.min.js"></script>
<script src="//cdn.bootcss.com/clipboard.js/1.5.10/clipboard.min.js"></script>

<script>
    var yiliaConfig = {
        fancybox: true,
        animate: true,
        isHome: false,
        isPost: true,
        isArchive: false,
        isTag: false,
        isCategory: false,
        fancybox_js: "//cdn.bootcss.com/fancybox/2.1.5/jquery.fancybox.min.js",
        scrollreveal: "//cdn.bootcss.com/scrollReveal.js/3.1.4/scrollreveal.min.js",
        search: true
    }
</script>


    <script> yiliaConfig.jquery_ui = [false]; </script>



    <script> yiliaConfig.rootUrl = "\/";</script><!-- hexo-inject:begin --><!-- hexo-inject:end -->






</head>
<body>
  <!-- hexo-inject:begin --><!-- hexo-inject:end --><div id="container">
    <div class="left-col">
    <div class="overlay"></div>
<div class="intrude-less">
    <header id="header" class="inner">
        <a href="/" class="profilepic">
            <img src="/img/avatar.png" class="animated zoomIn">
        </a>
        <hgroup>
          <h1 class="header-author"><a href="/">Dragonflyxyz</a></h1>
        </hgroup>

        

        
            <form id="search-form">
            <input type="text" id="local-search-input" name="q" placeholder="search..." class="search form-control" autocomplete="off" autocorrect="off" searchonload="false" />
            <i class="fa fa-times" onclick="resetSearch()"></i>
            </form>
            <div id="local-search-result"></div>
            <p class='no-result'>No results found <i class='fa fa-spinner fa-pulse'></i></p>
        


        
            <div id="switch-btn" class="switch-btn">
                <div class="icon">
                    <div class="icon-ctn">
                        <div class="icon-wrap icon-house" data-idx="0">
                            <div class="birdhouse"></div>
                            <div class="birdhouse_holes"></div>
                        </div>
                        <div class="icon-wrap icon-ribbon hide" data-idx="1">
                            <div class="ribbon"></div>
                        </div>
                        
                        <div class="icon-wrap icon-link hide" data-idx="2">
                            <div class="loopback_l"></div>
                            <div class="loopback_r"></div>
                        </div>
                        
                        
                        <div class="icon-wrap icon-me hide" data-idx="3">
                            <div class="user"></div>
                            <div class="shoulder"></div>
                        </div>
                        
                    </div>
                    
                </div>
                <div class="tips-box hide">
                    <div class="tips-arrow"></div>
                    <ul class="tips-inner">
                        <li>菜单</li>
                        <li>标签</li>
                        
                        <li>友情链接</li>
                        
                        
                        <li>关于我</li>
                        
                    </ul>
                </div>
            </div>
        

        <div id="switch-area" class="switch-area">
            <div class="switch-wrap">
                <section class="switch-part switch-part1">
                    <nav class="header-menu">
                        <ul>
                        
                            <li><a href="/">主页</a></li>
                        
                            <li><a href="/archives/">所有文章</a></li>
                        
                            <li><a href="/tags/">标签云</a></li>
                        
                            <li><a href="/about/">关于我</a></li>
                        
                        </ul>
                    </nav>
                    <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" href="mailto:123@123.com" title="Email"></a>
                            
                                <a class="fa GitHub" href="#" title="GitHub"></a>
                            
                                <a class="fa RSS" href="/atom.xml" title="RSS"></a>
                            
                        </ul>
                    </nav>
                </section>
                
                
                <section class="switch-part switch-part2">
                    <div class="widget tagcloud" id="js-tagcloud">
                        <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/tags/AES/">AES</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/AI/">AI</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Bigdata/">Bigdata</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/C/">C</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/C/">C#</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/C/">C++</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/DeepLearning/">DeepLearning</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Hadoop/">Hadoop</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/IOT/">IOT</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Java/">Java</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Linux/">Linux</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/MIT/">MIT</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/MachineLearning/">MachineLearning</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Mathematics/">Mathematics</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Matlab/">Matlab</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Microsoft/">Microsoft</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Node-js/">Node.js</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/OpenCV/">OpenCV</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Python/">Python</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/R/">R</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/RDMS/">RDMS</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/RTOS/">RTOS</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Ruby/">Ruby</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/SketchUp/">SketchUp</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/Vision/">Vision</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/arduino/">arduino</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/bigdata/">bigdata</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/blog/">blog</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/chip/">chip</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/code/">code</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/hexo/">hexo</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/homedesign/">homedesign</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/intel/">intel</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/mysql/">mysql</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/opensource/">opensource</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/optimize/">optimize</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/others/">others</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/php/">php</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/picture/">picture</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/python/">python</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/robot/">robot</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/science/">science</a></li><li class="tag-list-item"><a class="tag-list-link" href="/tags/solution/">solution</a></li></ul>
                    </div>
                </section>
                
                
                
                <section class="switch-part switch-part3">
                    <div id="js-friends">
                    
                      <a class="main-nav-link switch-friends-link" href="https://hexo.io">Hexo</a>
                    
                      <a class="main-nav-link switch-friends-link" href="https://pages.github.com/">GitHub</a>
                    
                      <a class="main-nav-link switch-friends-link" href="http://moxfive.xyz/">MOxFIVE</a>
                    
                    </div>
                </section>
                

                
                
                <section class="switch-part switch-part4">
                
                    <div id="js-aboutme">专注于前端</div>
                </section>
                
            </div>
        </div>
    </header>                
</div>
    </div>
    <div class="mid-col">
      <nav id="mobile-nav">
      <div class="overlay">
          <div class="slider-trigger"></div>
          <h1 class="header-author js-mobile-header hide"><a href="/" title="回到主页">Dragonflyxyz</a></h1>
      </div>
    <div class="intrude-less">
        <header id="header" class="inner">
            <a href="/" class="profilepic">
                <img src="/img/avatar.png" class="animated zoomIn">
            </a>
            <hgroup>
              <h1 class="header-author"><a href="/" title="回到主页">Dragonflyxyz</a></h1>
            </hgroup>
            
            <nav class="header-menu">
                <ul>
                
                    <li><a href="/">主页</a></li>
                
                    <li><a href="/archives/">所有文章</a></li>
                
                    <li><a href="/tags/">标签云</a></li>
                
                    <li><a href="/about/">关于我</a></li>
                
                <div class="clearfix"></div>
                </ul>
            </nav>
            <nav class="header-nav">
                        <ul class="social">
                            
                                <a class="fa Email" target="_blank" href="mailto:123@123.com" title="Email"></a>
                            
                                <a class="fa GitHub" target="_blank" href="#" title="GitHub"></a>
                            
                                <a class="fa RSS" target="_blank" href="/atom.xml" title="RSS"></a>
                            
                        </ul>
            </nav>
        </header>                
    </div>
    <link class="menu-list" tags="标签" friends="友情链接" about="关于我"/>
</nav>
      <div class="body-wrap"><article id="post-introduction-john-carmack" class="article article-type-post" itemscope itemprop="blogPost">
  
    <div class="article-meta">
      <a href="/2016/10/16/introduction-john-carmack/" class="article-date">
      <time datetime="2016-10-16T04:45:21.000Z" itemprop="datePublished">2016-10-16</time>
</a>


    </div>
  
  <div class="article-inner">
    
      <input type="hidden" class="isFancy" />
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克
    </h1>
  

      </header>
      
      <div class="article-info article-info-post">
        
    <div class="article-category tagcloud">
    <a class="article-category-link" href="/categories/others/">others</a>
    </div>


        
        <div class="clearfix"></div>
      </div>
      
    
    <div class="article-entry" itemprop="articleBody">
      
          
        <p><img src="https://pic3.zhimg.com/v2-74230aaa7e4c6bf6d4c57f6edc0fcf6a_b.jpg" alt="enter description here"><br><a id="more"></a><br>转自：<a href="https://zhuanlan.zhihu.com/p/22639468" target="_blank" rel="external">https://zhuanlan.zhihu.com/p/22639468</a><br>作者：SME<br>著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</p>
<p>共享代码看起来是应该做的事情</p>
<p>这么做只需要付出很小的代价</p>
<p>却往往可以显著地使很多人受益</p>
<p>…</p>
<p>21世纪每天坐在电脑前的我们</p>
<p>似乎看惯了显示器中以假乱真的画面</p>
<p>无论是游戏里可以让人看清面部绒毛的精细模型</p>
<p>还是完美隐藏在欧美大片儿里的电脑CG特效</p>
<p>我们根本无法想象仅仅二十多年前</p>
<p>那个电脑游戏画面不仅赶不上家用游戏机</p>
<p>甚至只能靠文字描述情节和场景的年代<br><img src="https://pic3.zhimg.com/v2-0ad6d2899da170457da7485754793186_b.jpg" alt="enter description here"><br>《洞穴深处的冒险》游戏界面</p>
<p>但有一个人偏不信邪</p>
<p>他相信只要自己足够努力地编程与开发</p>
<p>所有技术上的困难都能迎刃而解</p>
<p>他是约翰·卡马克——3D游戏教父、伟大的图形程序员</p>
<p>比尔·盖茨心中为数不多的天才</p>
<p><img src="https://pic3.zhimg.com/v2-3646b9f432cccda1381e32ebe49e557a_b.jpg" alt="enter description here"><br>约翰·卡马克</p>
<p>然而他不仅蹲过监狱，甚至连大学都没念完</p>
<p>…</p>
<p>童年的卡马克就充满着传奇的色彩</p>
<p>小学时他以满分的成绩进入了重点初中的一个天才班</p>
<p>卡马克与终身伴侣（计算机）的初见就在发生在那时</p>
<p>甚至还学习到了一些简单的编程基础</p>
<p>这让卡马克对计算机技术产生了极大的兴趣</p>
<p>但是造化弄人，刚刚找到自己生活的精神寄托</p>
<p>他却因为父母离异而搬到了落后的乡下</p>
<p>从此远离了心爱的计算机和编程</p>
<p>虽然没有电脑也还有编程的书籍可以看</p>
<p>这本《黑客：计算机革命英雄》便是他唯一的朋友</p>
<p>朋友的陪伴不仅没有让卡马克感到安慰</p>
<p>却更激发了他对现实的不满</p>
<p><img src="https://pic1.zhimg.com/v2-fa90309e6c27c2106333b3cb57712c24_b.png" alt="enter description here"><br>《黑客：计算机革命英雄》</p>
<p>彼时已立志成为程序员的卡马克</p>
<p>对没有电脑窘境越发感到无奈与恼怒</p>
<p>他心里全是对有电脑的完美生活的向往</p>
<p>于是他下定决心不择一切手段也要弄到一台<br><img src="https://pic2.zhimg.com/v2-9c8d362bdb215f54f189ac9a50dcad3d_b.jpg" alt="enter description here"></p>
<p>卡马克不知从哪里看来了铝热剂的配方</p>
<p>这是一种危险的化学用剂，铝热反应可以产生约2500℃的高温</p>
<p>几乎可以融化生活中绝大部分的物质</p>
<p>自然也包括大学电脑室的玻璃窗户</p>
<p>他竟然要去偷大学新购置的Apple II电脑</p>
<p>当他融开玻璃门触碰到了梦寐以求的电脑</p>
<p>如触电一般，一阵凉意袭来直至脊梁骨</p>
<p>警察的枪已经顶着他后脑勺</p>
<p>原来是卡马克一个超重的同伙触发的警报</p>
<p>为编程崛起而偷窃的少年就被包围了</p>
<p><img src="https://pic3.zhimg.com/v2-ddfc689fae88e75c5b3946d437407f1e_b.jpg" alt="enter description here"><br>14岁的花季，卡马克锒铛入狱</p>
<p>入狱时的评估报告中记录下了警官对他极高的评价</p>
<p>“Boy behaves like a walking brain withlegs…no empathy for other human being.”</p>
<p>“这孩子就像是野兽……对别人没有任何同情心”</p>
<p>经过少年之家一年的感化教育，卡马克变得更加的愤世嫉俗</p>
<p>但是依旧成绩优秀，以优异的分数考取了密苏里大学</p>
<p>在密苏里大学就读计算机科学专业两个学期后</p>
<p>也许是觉得课程的进度还不如自学来得快</p>
<p>也许是觉得课本的知识缺乏创造力</p>
<p>“为什么你不能给个项目让我们来做？你要什么我就能做出什么！”</p>
<p>卡马克在试卷上留下这样的一句话，便告别了他的大学</p>
<p>辍学后的卡马克加入了一家软件公司</p>
<p>在那里他第一次遇见了比自己还要厉害的程序员罗梅洛</p>
<p>他们惺惺相惜，很快成为了很好的工作伙伴</p>
<p>早就不满足于公司枯燥的工作的他们有了新的想法</p>
<p>他们打算私底下开发自己的游戏</p>
<p><img src="https://pic3.zhimg.com/v2-d96dc9d7f1ead2e4b4e6796b1f6d66f6_b.jpg" alt="enter description here"><br>工作中的约翰·卡马克</p>
<p>可是苦于没有资金购买计算机设备</p>
<p>他们便在周五下班后偷偷把公司的电脑装上车</p>
<p>运到他们郊外的房子里</p>
<p>用周末短暂的时间进行游戏开发</p>
<p>直到周日的晚上才把电脑送回公司</p>
<p>假装什么事也没有发生过<br><img src="https://pic3.zhimg.com/v2-fc7852082846a8c649bd90fe5df8df16_b.png" alt="enter description here"><br>卡马克（左）与罗梅洛（右）</p>
<p>虽然这听起来既荒谬又可笑</p>
<p>但他们心中的愉悦就像是代码一样源源不断地涌出</p>
<p>编程和开发就是他们生活所有的娱乐</p>
<p>就这样玩玩乐乐地开发了没多久</p>
<p>卡马克就一举攻破了当时家用游戏机与电脑的最大技术壁垒</p>
<p>横向卷轴滚动系统</p>
<p>经典的超级马里奥就是采用卷轴滚动系统的游戏，卷轴滚动就是在玩家控制角色移动的过程中，场景跟随角色的移动而改变，这意味着角色的每一次移动计算机都需要重新计算生成所有的场景，这对当时计算机的性能来说是不可能的。</p>
<p>卡马克开发出的名为EGA(3D图形加速卡的雏形)的显示技术</p>
<p>完美地在电脑上实现了顺滑的卷轴滚动效果</p>
<p>他用一晚上就复刻了超级马里奥兄弟3的第一关</p>
<p>他们将移植的游戏拿给任天堂寻求合作</p>
<p>但是任天堂完全不在乎家用游戏机以外的平台</p>
<p>游戏巨头任天堂</p>
<p>可卡马克和他的团队也没有气馁</p>
<p>而是下定决心自己创业</p>
<p>成立了日后大红大紫的id Software</p>
<p>发行了完全免费且效果媲美游戏主机的《指挥官基恩》</p>
<p>在这个信息时代，客观障碍已不复存在，所谓障碍都是主观上的。如果你想动手开发什么全新的技术，你不需要几百万美元的资金，你只需要在冰箱里放满比萨和可乐，再有一台便宜的计算机，和为之献身的决心。</p>
<p><img src="https://pic2.zhimg.com/v2-3fc91420df9caf31b985d83764346871_b.jpg" alt="enter description here"><br>id Software全员</p>
<p>作为技术的狂热追逐者</p>
<p>卡马克觉得横版卷轴的方式已经老掉牙了</p>
<p>需要找到更加有冲击力的游戏表现方式</p>
<p>于是在1992年，id Software推出了第一款3D空间效果的游戏</p>
<p>虽然这款《德军总部3D》中的场景并非是真的3D模型</p>
<p>是通过对平面图形的变换实现场景随视角变化的</p>
<p><img src="https://pic2.zhimg.com/v2-535e6a870b1897efd8da5f86d4dd4245_b.jpg" alt="enter description here"><br>德军总部3D</p>
<p>但是这款游戏的成功让卡马克真正地打开了3D世界的大门</p>
<p>从此人类发现：原来我们真的可以“身临其境”地把自己融入到游戏场景里面去！</p>
<p>卡马克凭借超强的编程能力不断地完善空间效果</p>
<p>随后发布的《Doom》甚至有了物理效果，阴影效果</p>
<p>要知道当时小霸王才刚刚发售可以玩FC游戏的学习机</p>
<p>《Doom》这款游戏给id Software带来了上千万的收入</p>
<p><img src="https://pic3.zhimg.com/v2-2cf0cf1c999855b3f0c52da26e9ad8de_b.jpg" alt="enter description here"><br>Doom</p>
<p>游戏的安装量甚至比当时Windows系统的安装量都要大</p>
<p>就连盖茨在Win95的发布会都演示了这款叹为观止的大作</p>
<p>然而当时id Software整个团队也只有仅仅13人</p>
<p>卡马克只专注于游戏背后的程序框架的开发</p>
<p>他首创的这种程序框架后来被称为游戏引擎</p>
<p>游戏引擎让游戏开发工作量大大降低</p>
<p>如今游戏引擎被广泛采用</p>
<p>经过两代《Doom》的积累，卡马克准备再一次震惊世人</p>
<p>两年的潜心研发，ID Software终于发布了跨时代的《Quake》</p>
<p>这不仅是游戏史上的里程碑，也是计算机史上的革命性飞跃</p>
<p>《Quake》实现了完完全全的3D游戏画面</p>
<p>玩家可以在游戏世界中用任何角度观察世界</p>
<p>可以说《Quake》的诞生开启了计算机的3D革命</p>
<p><img src="https://pic2.zhimg.com/v2-a407757b9c5229baa6a835593d2bcdd9_b.jpg" alt="enter description here"><br>《Quake》游戏画面</p>
<p>《Quake》适配了上了当时先进的图形加速卡</p>
<p>能流畅地运行游戏，是许多玩家升级计算机配置的最大动力</p>
<p>这股动力一直延续到了现在</p>
<p>卡马克凭一己之力硬是推动了计算机图形处理的发展</p>
<p>后来图形加速卡渐渐承担了计算机全部的图形处理工作</p>
<p>发展成为我们现在熟悉的独立显卡</p>
<p>天才卡马克虽然曾经爱着天才乔布斯的Apple电脑</p>
<p>但他却十分痛恨乔布斯那样的专利流氓</p>
<p>所有科学技术，以及文化、知识、理论，都是在前人的基础上发展起来的。去注册一项专利，就等于宣布说：“这个想法是我的想法，你不能使用或扩展它，因为，我‘拥有’这个想法。</p>
<p>因此卡马克积极倡导开源软件</p>
<p>几乎放出了他早期所有作品的源代码</p>
<p><img src="https://pic1.zhimg.com/v2-fe2cd135955049f71637a416996b8d08_b.jpg" alt="enter description here"><br>爱好者将Quake移植到各种设备上</p>
<p>源代码的公开震惊了世界</p>
<p>不是因为卡马克的无私</p>
<p>而是因为代码的精妙</p>
<p>在《Quake》使用的引擎底层程序中</p>
<p>其中有一个开根号并取倒数的算法</p>
<p>这个算法效果等同于1/sqrt(x)，但速度却快了4倍</p>
<p>直到现在这个算法仍然被大量地使用<br><img src="https://pic2.zhimg.com/v2-32028212a5ae563739185e7d67a48dd5_b.jpg" alt="enter description here"><br>约翰·卡马克</p>
<p>算法中有一句：</p>
<p>0x5f3759df 这个神秘的数字以及注释的what the f**k？</p>
<p>让卡马克又平添了几分传奇色彩</p>
<p>后来有数学教授分析研究了很久，尝试了无数次</p>
<p>才找到效果比卡马克算法中更好的数值</p>
<p><img src="https://pic4.zhimg.com/v2-79a7d620497ebd398b7b65602b676f3f_b.jpg" alt="enter description here"><br>卡马克算法</p>
<p>用Quake引擎开发的游戏众多，其中也不乏许多经典</p>
<p>例如《Half Life》（后来衍生出CS系列）以及《荣誉勋章》</p>
<p>所有的第一人称射击游戏几乎都是源自Quake</p>
<p><img src="https://pic2.zhimg.com/v2-ece4226c81db23883029ef0cf1c4b199_b.jpg" alt="enter description here"><br>Half Life半条命游戏画面</p>
<p>不知道是不是科技大佬们都有一颗想飞天的心</p>
<p>功成名就的卡马克在新世纪伊始便搞起了火箭</p>
<p>“不务正业”成立了名为“犰狳火箭”的公司</p>
<p>后来在火箭的嵌入式编程上屡有突破</p>
<p>多次获得了NASA关于月球着陆器项目竞赛的奖项<br><img src="https://pic1.zhimg.com/v2-fa5c3308b83dda169cc8d308de7bfa58_b.jpg" alt="enter description here"><br>约翰·卡马克获NASA奖项</p>
<p>曾经站在计算机图形革命风口的卡马克</p>
<p>如今再一次地踏上了另一场革命的浪尖</p>
<p>2013年卡马克被邀请至当时还名不见经传的OculusVR担任CTO</p>
<p>他的目的很简单，正如他当年醉心与3D游戏的开发</p>
<p>投身VR同样也是将虚拟世界更好的展示给人们</p>
<p>身为CTO他也不会懈于基础的工作</p>
<p>为了丰富VR的游戏内容，卡马克几乎是一人将游戏《minecraft》</p>
<p>完整地移植到了Oculus Rift这个VR平台上</p>
<p><img src="https://pic1.zhimg.com/v2-54824c499109b1993dfc3a3186cdcbc4_b.jpg" alt="enter description here"><br>Oculus CTO约翰·卡马克</p>
<p>卡马克不遗余力地将我们带入虚拟的世界中</p>
<p>这让我们不禁想问</p>
<p>究竟计算机与现实世界隔了多少个卡马克</p>
<p>这个问题恐怕只有他自己能会回答</p>
<p>由于摩尔定律的规律，某个时间点上要极其聪明的图形程序员才可以做出来的东西，在若干年之后只要能力还可以的程序员就能复制出来。</p>
<p><img src="https://pic4.zhimg.com/v2-3d9c40e10f4d898990bcabcc75ff9823_b.jpg" alt="enter description here"><br>每个人都有无法实现的梦想</p>
<p>或许是那梦想需要太多时间和金钱</p>
<p>或许是那梦想太过于离谱</p>
<p>或许是那梦想会违反法律</p>
<p>但不管能否实现，它们总盘旋在你脑海里，每一天，让你浮想连翩</p>
<p>这就是为什么会有庞大的游戏产业来实现各种光怪陆离的白日梦</p>
<p>这就是为什么卡马克会努力创造一个虚拟的真实世界</p>

      
    </div>
    
  </div>
  
    
    <div class="copyright">
        <p><span>本文标题:</span><a href="/2016/10/16/introduction-john-carmack/">第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克</a></p>
        <p><span>文章作者:</span><a href="/" title="回到主页">Dragonflyxyz</a></p>
        <p><span>发布时间:</span>2016-10-16, 12:45:21</p>
        <p><span>最后更新:</span>2016-10-16, 13:14:04</p>
        <p>
            <span>原始链接:</span><a class="post-url" href="/2016/10/16/introduction-john-carmack/" title="第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克">https://dragonflyxyz.github.io/2016/10/16/introduction-john-carmack/</a>
            <span class="copy-path" data-clipboard-text="原文: https://dragonflyxyz.github.io/2016/10/16/introduction-john-carmack/　　作者: Dragonflyxyz" title="点击复制文章链接"><i class="fa fa-clipboard"></i></span>
            <script> var clipboard = new Clipboard('.copy-path'); </script>
        </p>
        <p>
            <span>许可协议:</span><i class="fa fa-creative-commons"></i> <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/" title="CC BY-NC-SA 4.0 International" target = "_blank">"署名-非商用-相同方式共享 4.0"</a> 转载请保留原文链接及作者。
        </p>
    </div>



    <nav id="article-nav">
        
            <div id="article-nav-newer" class="article-nav-title">
                <a href="/2016/10/16/php-develop-1200examples/">
                    《PHP开发实战1200例》
                </a>
            </div>
        
        
            <div id="article-nav-older" class="article-nav-title">
                <a href="/2016/10/16/Ebook-search-engine/">
                    几个好的电子书搜索引擎
                </a>
            </div>
        
    </nav>

  
</article>

    <div id="toc" class="toc-article">
        <strong class="toc-title">文章目录</strong>
        
            
        
    </div>
    <style>
        .left-col .switch-btn,
        .left-col .switch-area {
            display: none;
        }
        .toc-level-3 i,
        .toc-level-3 ol {
            display: none !important;
        }
    </style>

    <input type="button" id="tocButton" value="隐藏目录"  title="点击按钮隐藏或者显示文章目录">

    <script>
        yiliaConfig.toc = ["隐藏目录", "显示目录", !!"false"];
    </script>



    
<div class="share">
    
        <div class="bdsharebuttonbox">
            <a href="#" class="fa fa-twitter bds_twi" data-cmd="twi" title="分享到推特"></a>
            <a href="#" class="fa fa-weibo bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a>
            <a href="#" class="fa fa-qq bds_sqq" data-cmd="sqq" title="分享给 QQ 好友"></a>
            <a href="#" class="fa fa-files-o bds_copy" data-cmd="copy" title="复制网址"></a>
            <a href="#" class="fa fa fa-envelope-o bds_mail" data-cmd="mail" title="通过邮件分享"></a>
            <a href="#" class="fa fa-weixin bds_weixin" data-cmd="weixin" title="生成文章二维码"></a>
            <a href="#" class="fa fa-share-alt bds_more" data-cmd="more"></i></a>
        </div>
        <script>
            window._bd_share_config={
                "common":{"bdSnsKey":{},"bdText":"第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克　| Dragonflyxyz的知识整理　","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"24"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
        </script>
    

    
</div>







    




    <div class="scroll" id="post-nav-button">
        
            <a href="/2016/10/16/php-develop-1200examples/" title="上一篇: 《PHP开发实战1200例》">
                <i class="fa fa-angle-left"></i>
            </a>
        

        <a title="文章列表"><i class="fa fa-bars"></i><i class="fa fa-times"></i></a>

        
            <a href="/2016/10/16/Ebook-search-engine/" title="下一篇: 几个好的电子书搜索引擎">
                <i class="fa fa-angle-right"></i>
            </a>
        
    </div>

    <ul class="post-list"><li class="post-list-item"><a class="post-list-link" href="/2018/02/03/book-c-sharp-deconstructed/">Book《C# Deconstructed-Discover How C# Works on the .Net Framework》</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/03/26/mathematics-rookie-and-machine-learning/">数学菜鸟如何学习机器学习</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/03/23/automatic-sketchup-cn-3/">《Automatic SketchUp Creating 3-D Models in Ruby》中文翻译 11-13章</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/03/10/automatic-sketchup-cn-2/">《Automatic SketchUp Creating 3-D Models in Ruby》中文翻译7-10章</a></li><li class="post-list-item"><a class="post-list-link" href="/2017/03/09/automatic-sketchup-cn-1/">《Automatic SketchUp Creating 3-D Models in Ruby》中文翻译1-5章</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/12/29/python-opencv-learn-note01/">Python OpenCV学习记录</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/11/15/learn-deep-learning-zero-based-1/">零基础入门深度学习(1)-感知器</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/11/15/hexo-show-mathjax-and-table/">Hexo如何显示公式和表格</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/23/hexo-local-search-only-titile/">让Hexo的本地搜索只搜索标题</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/17/why-im-switching-from-python-to-nodejs/">为什么我从Python转战到Node.js</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/16/php-develop-1200examples/">《PHP开发实战1200例》</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/16/introduction-john-carmack/">第一人称射击游戏教父，首款3D游戏的开发者，传奇程序员——约翰·卡马克</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/16/Ebook-search-engine/">几个好的电子书搜索引擎</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/16/MIT-tech-review-2016/">麻省理工科技评论2016年1-6月</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/10/16/head-first-python/">《Head First Python》中文版</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/07/09/microsoft-opensource-malmo-ai/">微软开源Malmo AI项目平台 利用Minecraft构建复杂机器人任务</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/06/22/why-this-robot-in-the-grocery-store/">零售业有福了！大数据机器人卖场值班，点货超轻松</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/06/21/poor-zorro-linux-book/">穷佐罗的Linux书，知识点整理的很好</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/20/github-awesome-hadoop/">Hadoop学习资源集合（Github）</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/17/python-decorated-concurrency/">Python多线程(Decorated concurrency)</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/15/github-awesome-machine-learning/">Github上最全的机器学习资料集合</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/12/the-9-best-languages-form-crunching-data/">数据处理的 9 大编程语言</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/05/github-awesome-bigdata/">最全的大数据学习资料集合（Github）</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/05/01/a-low-scientist-how-to-get-nobel-prize/">一个逗逼的科研狗是如何成为诺贝尔奖得主的</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/04/23/how-much-a-chip/">一枚芯片的实际成本是多少？</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/04/22/awesome-python-site/">Awesome-python一个收集Python资源的网站</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/04/21/intel-releases-the-arduino-101-firmware-source-code/">Intel将两款arduino设备的实时操作系统开源</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/04/20/studying-the-language-and-structure-in-non-programmers-solutions/">《编程问题的非程序员解决方案之研究》</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/03/26/if-human-and-animals-change/">如果人和动物角色互换？这样的世界怎样想象</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/03/11/checksum-8bits-and-16bits/">checksum-8位和16位校验和代码示例</a></li><li class="post-list-item"><a class="post-list-link" href="/2016/02/06/easy-popular-science-doc-deep-learning/">关于深度学习可能最容易读进去的科普贴</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/12/16/what-is-iot-ppt/">物联网是什么-ppt图</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/12/14/100-BBC-recordfile-parents-with-children/">家长应该陪孩子一起看的100部BBC纪录片</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/11/30/america-people-live-style/">美国日常生活习惯一瞥</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/11/29/photo-wall-style/">教你轻松搞定相片墙壁搭配</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/10/16/algorithm-detail-DES-AES-SHA/">DES、AES、SHA加密算法详解</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/10/16/homedesign-north-america/">越来越喜欢北美的家庭装饰风格</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/03/06/mysql-10millions-optimize-query/">Mysql数据库千万级别数据的查询优化和分页测试</a></li><li class="post-list-item"><a class="post-list-link" href="/2015/02/16/my-blog-set/">博客设置</a></li><li class="post-list-item"><a class="post-list-link" href="/2014/10/01/john-carmack-on-inlined-code/">John Carmack on inlined code</a></li><li class="post-list-item"><a class="post-list-link" href="/2014/05/01/hello-world/">Hello World</a></li><li class="post-list-item"><a class="post-list-link" href="/2014/01/16/test1/">test1</a></li></ul>




    <script>
        
    </script>
</div>
      <footer id="footer">
    <div class="outer">
        <div id="footer-info">
            <div class="footer-left">
                <i class="fa fa-copyright"></i> 
                2016-2018 Dragonflyxyz
            </div>
            <div class="footer-right">
                <a href="http://hexo.io/" target="_blank" title="快速、简洁且高效的博客框架">Hexo</a>  Theme <a href="https://github.com/MOxFIVE/hexo-theme-yelee" target="_blank" title="简而不减 Hexo 双栏博客主题  v3.5">Yelee</a> by MOxFIVE <i class="fa fa-heart animated infinite pulse"></i>
            </div>
        </div>
        
            <div class="visit">
                
                    <span id="busuanzi_container_site_pv" style='display:none'>
                        <span id="site-visit" title="本站到访数"><i class="fa fa-user" aria-hidden="true"></i><span id="busuanzi_value_site_uv"></span>
                        </span>
                    </span>
                
                
                    <span>| </span>
                
                
                    <span id="busuanzi_container_page_pv" style='display:none'>
                        <span id="page-visit"  title="本页阅读量"><i class="fa fa-eye animated infinite pulse" aria-hidden="true"></i><span id="busuanzi_value_page_pv"></span>
                        </span>
                    </span>
                
            </div>
        
    </div>
</footer>
    </div>
    
<script data-main="/js/main.js" src="//cdn.bootcss.com/require.js/2.2.0/require.min.js"></script>

    <script>
        $(document).ready(function() {
            var iPad = window.navigator.userAgent.indexOf('iPad');
            if (iPad > -1 || $(".left-col").css("display") === "none") {
                var bgColorList = ["#9db3f4", "#414141", "#e5a859", "#f5dfc6", "#c084a0", "#847e72", "#cd8390", "#996731"];
                var bgColor = Math.ceil(Math.random() * (bgColorList.length - 1));
                $("body").css({"background-color": bgColorList[bgColor], "background-size": "cover"});
            }
            else {
                var backgroundnum = 5;
                var backgroundimg = "url(/background/bg-x.jpg)".replace(/x/gi, Math.ceil(Math.random() * backgroundnum));
                $("body").css({"background": backgroundimg, "background-attachment": "fixed", "background-size": "cover"});
            }
        })
    </script>





<div class="scroll" id="scroll">
    <a href="#" title="返回顶部"><i class="fa fa-arrow-up"></i></a>
    <a href="#comments" onclick="load$hide();" title="查看评论"><i class="fa fa-comments-o"></i></a>
    <a href="#footer" title="转到底部"><i class="fa fa-arrow-down"></i></a>
</div>
<script>
    // Open in New Window
    
        var oOpenInNew = {
            
            
            
            
            
            
             archives: ".archive-article-title", 
             miniArchives: "a.post-list-link", 
            
             friends: "#js-friends a", 
             socail: ".social a" 
        }
        for (var x in oOpenInNew) {
            $(oOpenInNew[x]).attr("target", "_blank");
        }
    
</script>

<script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js">
</script>
  </div><!-- hexo-inject:begin --><!-- Begin: Injected MathJax -->
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({"tex2jax":{"inlineMath":[["$","$"],["\\(","\\)"]],"skipTags":["script","noscript","style","textarea","pre","code"],"processEscapes":true},"TeX":{"equationNumbers":{"autoNumber":"AMS"}}});
</script>

<script type="text/x-mathjax-config">
  MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i=0; i < all.length; i += 1) {
      all[i].SourceElement().parentNode.className += ' has-jax';
    }
  });
</script>

<script type="text/javascript" src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<!-- End: Injected MathJax -->
<!-- hexo-inject:end -->
</body>
</html>